package com.ybl.store.common.convention.errorcode;

/**
 * 基础错误码
 */
public enum BaseErrorCode {

    // ========== 一级宏观错误码 客户端错误 ==========
    CLIENT_ERROR("A000001", "用户端错误"),
    CLIENT_UNAUTHORIZED_ERROR("A000002", "用户端无权限"),

    // ========== 二级宏观错误码 登录错误 ==========
    USER_NULL_ERROR("A000100", "用户不存在"),
    USER_LOGIN_ERROR("A000101", "用户名或密码错误"),

    // ========== 二级宏观错误码 分店错误 ==========
    STORE_SAVE_ERROR("A000200", "新增分店失败"),
    STORE_DELETE_ERROR("A000201", "删除分店失败"),
    STORE_UPDATE_ERROR("A000202", "修改分店失败"),
    STORE_NULL_ERROR("A000203", "分店不存在"),

    // ========== 二级宏观错误码 店长错误 ==========
    MANAGER_SAVE_ERROR("A000300", "新增店长失败"),
    MANAGER_DELETE_ERROR("A000301", "删除店长失败"),
    MANAGER_UPDATE_ERROR("A000302", "修改店长失败"),
    MANAGER_NULL_ERROR("A000303", "店长不存在"),

    // ========== 二级宏观错误码 店员错误 ==========
    CLERK_SAVE_ERROR("A000400", "新增店员失败"),
    CLERK_DELETE_ERROR("A000401", "删除店员失败"),
    CLERK_UPDATE_ERROR("A000402", "修改店员失败"),
    CLERK_NULL_ERROR("A000403", "店员不存在"),

    // ========== 二级宏观错误码 顾客错误 ==========
    CUSTOMER_SAVE_ERROR("A000500", "新增顾客失败"),
    CUSTOMER_DELETE_ERROR("A000501", "删除顾客失败"),
    CUSTOMER_UPDATE_ERROR("A000502", "修改顾客失败"),
    CUSTOMER_NULL_ERROR("A000503", "顾客不存在"),

    // ========== 一级宏观错误码 系统执行出错 ==========
    SERVER_ERROR("B000001", "系统执行出错"),

    // ========== 一级宏观错误码 调用第三方服务出错 ==========
    REMOTE_ERROR("C000001", "调用第三方服务出错");

    /**
     * 错误码
     */
    private final String code;

    /**
     * 错误信息
     */
    private final String message;

    BaseErrorCode(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public String code() {
        return code;
    }

    public String message() {
        return message;
    }
}
